教學原文參考:影像辨識機械手臂
這個單元著重在將之前所學到的內容做整合,並且應用到工業類的主題。讓我們試想一個場景,傳統工廠對於物料分類,大多仰賴人工搬運。當貨物、料件運送至指定地點後,再由倉儲人員開堆高機出來搬貨,依照類別存放在指定層架。
想想看,其中是不是有能自動化的部份呢?像是在一個倉庫內會有很多區域,每個區域都存放著不同的東西,若是能架一臺機器手臂於指定位置,那麼人員只要將屬於這間倉庫的料件置於門口,是否就能讓手臂自動幫我們分門別類地放好呢?當然,這還需要讓手臂看得見是什麼貨物才行。
接下來就讓我們來設計一個,影像辨識後能讓手臂幫我們搬運物件的專題。藉由 Pixel:bit 的 ESP32 與攝影鏡頭,並搭配 Edge Impulse,可以完成影像辨識貨物分類。另外,我們還需要一個機器手臂,手臂控制的部份可以交給 ATmega328p,但為了讓手臂的馬達方便連接,還需要準備一塊適合的擴充板。接著就剩下用來辨識的貨物了,這就自己 DIY 設計吧!
可以選擇自己手邊有的機器手臂或是擴充板,設計出屬於自己的操作場景。接下來的教學內容,我們會使用下列設備做示範:
Pixel:bit x1
Micro USB to USB Type-A數據傳輸線 x1
meArm 迷你機械手臂 x1
MbitBot 多功能板 x1
固定板或是製作貨物的材料(自行 DIY)
將任務分工後我們知道,ESP32 負責辨識與顯示,ATmega328p 負責手臂控制。詳細動作流程規劃如下圖所示,以顏色區分工作權責,藍色區塊為 ATmega328p,紅色區塊則是 ESP32。
我們以按下 Pixel:bit 上面的按鈕來啟動辨識任務,按鈕是由 ATmega328p 控制。當 ATmega328p 讀取到按下按鈕的動作,會立即發送請求訊號給 ESP32,當 ESP32 收到請求訊號後,將啟動拍攝與辨識功能,並將結果顯示在螢幕上,同時回傳結果給 ATmega328p。收到結果的 ATmega328p,經比對結果後控制手臂夾取貨物並搬移至指定區域。
我們在網路上找到兩張圖片,做為讓 Pixel:bit 辨識的目標。分別是左側的「寶特瓶」與右側的「廚餘」。大家可以依照自己的喜好選擇要辨識的目標。
圖片來源:https://www.freepik.com/home
將圖片印出來後,黏在裁切的厚紙板或木板上,將其製作成小牌子,牌子末端設計 T 型結構,以便手臂方便夾取,也讓牌子在移動的過程中不易脫落。
整個流程最重要的一環,就是要能夠辨識物品,這樣才能呼叫機器手臂將東西搬運到指定地點。在教學單元(五)與教學單元(六),我們已經學會如何訓練一個模型。從使用 Pixel:bit 拍攝照片蒐集資料,上傳至 Edge Impulse 線上平台,並透過平台服務訓練與評估模型。
請依照教學單元(五)的教學步驟,使用 Pixel:bit 蒐集「寶特瓶」與「廚餘」的照片資料,蒐集的照片越多越好,最好是不同角度或是不同位置的圖片。
小知識
資料蒐集的正確性會大大影響訓練出來的模型,請確保同類別的資料沒有參雜其他照片,例如蒐集的寶特瓶資料內,不應該參雜廚餘的資料,或是別的圖像資料。每個種類的資料數量平不平均,也是一個影響模型準確性的重點,請儘量讓每個種類可以蒐集到等量的資料,例如寶特瓶蒐集到的資料大約是 100 張,請讓廚餘的資料也接近 100 張。最忌諱的就是數量相差過大,像是寶特瓶的資料是 123 張,廚餘的資料只有 10 張。
將蒐集到的照片全數上傳至 Edge Impulse ,步驟可參照教學單元(六),我們將寶特瓶的資料標籤設定為「bottle」,廚餘的資料標籤則是「food」。請依照您找到的圖片,設定自己能理解的標籤名稱。
設定圖片裁切大小,請選擇「96 x 96」,並確認「Output features」是不是我們要辨識的兩個類別。
設定訓練次數的部份我們設定「200次」,模型的選擇是用預設的「MobileNetV1 96×96 0.1」。
完成上述設定後即可開始訓練模型,下圖是訓練後的結果,準確度有 97% 還不錯。
接著同樣參照教學單元(六)的內容,將訓練好的模型編譯成 Arduino library,再將模型儲存到自己的電腦。
請自行組裝 meArm 機器手臂,接線方式請參考下方兩張圖。
請依照上圖伺服馬達對應的編號,連接到擴充板「MbitBot」上,並順勢將電池也接上去。
可以自行裁切厚紙板或木板,並用麥克筆自己畫出區域,前提是手臂夾爪要能到的了的地方喔!請大家自行發揮。
我們使用雷切機製作了一片有 A、B 區與擺放區的木板,並用螺絲、螺帽與銅柱將各部件都固定,最後將 Pixel:bit 插上,完成圖如下所示:
若之前已下載過範例程式,即可在之前下載的資料夾中找到「07_Arm_control」。如果還沒下載,請點選連結,進到網頁看到「Code」按鈕,點選後選擇「Download ZIP」就能將檔案整個下載下來。
解壓縮後,這個單元的範例程式,就放在資料夾名稱為「07_Arm_control」裡。
請接續「影像辨識機械手臂(Part 2)」。